#include <iostream>
#include <cmath>
#include <string>
#include <stack>
#include<queue>
using namespace std;
const int N = 105;
int dir[4][2] = {
0,1,1,0,0,-1,-1,0
};
struct P {
int x, y;
};
int main()
{
int map1[N][N],map2[N][N];
int n;
cin >> n;
int num1 = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
{
cin >> map1[i][j];
map2[i][j] = 0;
if (map1[i][j] == 0) num1++;
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
cout << map1[i][j] << ' ';
cout << endl;
}
queue<P>s;
P p;
cin >> p.x >> p.y;
//cout << p.x<<p.y<< endl;
P pe;
cin >> pe.x >> pe.y;
map2[p.x][p.y] = 1;
s.push(p);
int num = 0;
while (!s.empty())
{
s.pop();
if (p.x == pe.x&&p.y == pe.y) break;
for (int i = 0; i < 4; i++)
{
int xx = dir[i][0] + p.x;
int yy = dir[i][1] + p.y;
//cout << xx << ' ' << yy << endl;
if (xx < 0 || yy < 0 || xx >= n || yy >= n || map2[xx][yy] != 0||map1[xx][yy]==1) continue;
map2[xx][yy] = 1;
P pq;
pq.x = xx; pq.y = yy;
s.push(pq);
}
p = s.front();
num++;
}
if (map2[pe.x][pe.y]==1) cout << "ok" << endl;
//cout << num << endl;
system("pause");
return 0;
}
/*
5
1 0 0 0 1
0 1 0 1 1
1 0 0 0 0
1 0 0 1 1
1 1 0 0 0
0 2
4 4
*/